<?php

declare(strict_types=1);

namespace DreamCat\StateMachine\HookInterface;

use DreamCat\StateMachine\Popo\MachineData;

/**
 * 执行动作前调用接口
 * @author vijay
 */
interface BeforeOperatorInterface
{
    /**
     * 审核通过后，执行动作前调用
     * @param MachineData $machineData 状态机
     * @param string $operatorKey 动作标识
     * @param array $operatorParam 动作参数
     * @return void
     * @note 此函数抛出异常是会拦截动作执行的，但是动作保留一个按钮可以再次执行
     */
    public function beforeOperator(MachineData $machineData, string $operatorKey, array $operatorParam): void;
}

# end of file
